package com.improvess.rna.som;

public abstract class Neuronio {

	private Coordenada coordenada;


	public Neuronio(int posicaoX, int posicaoY) {

		this.coordenada = new Coordenada(posicaoX, posicaoY);
	}
	
	public Coordenada getCoordenada() {
		return coordenada;
	}
	
	public double funcaoVizinhanca(Coordenada coordenadaVencedor, double sigmaVizinhaca) {
		
		double retornoX = Math.abs(this.getCoordenada().getPosicaoX()- coordenadaVencedor.getPosicaoX());
		double retornoY = Math.abs(this.getCoordenada().getPosicaoY()- coordenadaVencedor.getPosicaoY());
		double numerador = retornoX * retornoX + retornoY * retornoY;
		double denominador = 2 * sigmaVizinhaca * sigmaVizinhaca;
		double funcao = Math.exp(-(numerador / denominador));
		return funcao;
	}
	
}
